/*
买卖股票的最佳时机
*/

#include <stdio.h>  
  
int maxProfit(int* prices, int pricesSize) 
{  
    if (prices == NULL)
    {
        return 0;
    }
    if (pricesSize <= 1) 
    {  
        return 0; // 如果数组为空或只有一个元素，则无法获取利润  
    }  
      
    int minPrice = prices[0]; // 初始化最低买入价格为数组的第一个元素  
    int maxProfit = 0; // 初始化最大利润为0  
      
    for (int idx = 1; idx < pricesSize; idx++) 
    {  
        // 更新最低买入价格，如果当前价格更低  
        if (prices[idx] < minPrice) {  
            minPrice = prices[idx];  
        }  
        // 计算当前卖出能获得的利润，并更新最大利润  
        else if (prices[idx] - minPrice > maxProfit) 
        {  
            maxProfit = prices[idx] - minPrice;  
        }  
    }  
      
    return maxProfit;  
}  
  
int main() 
{  
    int prices[] = {7, 1, 5, 3, 6, 4};  
    int pricesSize = sizeof(prices) / sizeof(prices[0]);  
      
    int maxiProfit = maxProfit(prices, pricesSize);  
    printf("Maximum profit: %d\n", maxiProfit);  
      
    return 0;  
}